#include <iostream>
#include <vector>
using namespace std;

#define forn(i,n) for(int i=0;i<n;i++)

typedef vector<int> vint;
typedef vector<vint> vvint;

struct Network{
	public:
		Network();
		Network(const int r, const int s);
		vint procesar(const vint& p) const;
		vvint W;
		vint b;
		int S() const;
		int R() const;
	private:
		int _S, _R;
		vint hardlim(const vint& n) const;
};

Network::Network(const int r, const int s) : _S(s), _R(r) {
	W = vvint(_S,vint(_R));
	b = vint(_S);
}

vint Network::hardlim(const vint& n) const{
	vint a(n.size());
	forn(i,(int)n.size()) a[i] = n[i]<0 ? 0 : 1;
	return a;
}

vint Network::procesar(const vint& p) const {
	int n[_S];
	/* n = Wp + b */
	forn(i,_S){
		n[i] = b[i];
		forn(j,_R){
			n[i] += W[i][j]*p[j];
		}
	}
	/* a = hardlim(n) */
	return hardlim(p);
}

int Network::S() const{
	return _S;
}

int Network::R() const{
	return _R;
}

int main(){

	// cantidad de neuronas / outputs
	int S = 5;

	// tamanio de la entrada
	int R = 25;

	// input
	int p[R];

	return 0;
}
